home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-11 / trudf.zip / JPLIB.H < prev    next >
Text File  |  1993-01-04  |  6KB  |  183 lines

  1. /**********
  2. *
  3. *   jplib.h
  4. *
  5. *   Header file for Clipper modules.
  6. *
  7. *
  8. **********/
  9.  
  10. #define CLIPPER      void pascal
  11. #define ABS(p)       (((p)<0)?-(p):(p))
  12. #define ADTOI(p)     (int) ((p)-('0'))        /* ascii digit to int */
  13. #define BLANKDS      "00000000"
  14. #define COLOR_VID_AD 0xB800
  15. #define DEFAULT      0
  16. #define DIGIT(p)     (char) ((p)+('0'))       /* int digit to ascii */
  17. #define FALSE        (0)
  18. #define MONO_VID_AD  0xB000
  19. #define NULLC        '\0'      /* use to terminate char arrays as strings */
  20. #define NULLLONG     0L        /* for NULL pointer return */
  21. #define NULLS        ""        /* use with _retc() to return null string */
  22. #define SPACEC       ' '
  23. #define TRUE         (1)
  24. #define TWO_BILLION  2000000000               /* for base.c */
  25. #define ZEROC        '0'
  26.  
  27. /* min and max macros */
  28.  
  29. #define max(a,b)    (((a) > (b)) ? (a) : (b))
  30. #define min(a,b)    (((a) < (b)) ? (a) : (b))
  31.  
  32. /* Replace #define macros in Lattice and Clipper */
  33.  
  34. #define isalpha(p)   (('A'<=(p)&&(p)<= 'Z')||('a'<= (p)&&(p)<='z'))
  35. #define isdigit(p)   ('0'<=(p)&&(p)<='9')
  36.  
  37. #define isspace(p)   (((p) == ' ')||((p) == '\n')||((p) == '\t')||\
  38.                        ((p) == '\f')||((p) == '\r'))
  39.  
  40. #define islower(p)   ( 'a' <= (p) && (p) <= 'z' )
  41. #define isupper(p)   ( 'A' <= (p) && (p) <= 'Z' )
  42.  
  43. #define toupper(p)   ( islower(p) ? ((p) + ('A' - 'a')) : ((p)) )
  44. #define tolower(p)   ( isupper(p) ? ((p) - ('A' - 'a')) : ((p)) )
  45.  
  46. #define ISLPYR(yr)    ((yr)>0 && (((yr)%4==0&&(yr)%100!=0) || (yr)%400==0))
  47.  
  48. #define ISMONTH(p)    ((p)>=1 && (p)<=12)       /* valid month */
  49.  
  50. #define ISYEAR(p)     ((p)>=1 && (p)<=9999)     /* valid year */
  51.  
  52. #define ISDS(p)       ( ISDIGIT(p[0]) && ISDIGIT(p[1]) &&\
  53.                         ISDIGIT(p[2]) && ISDIGIT(p[3]) &&\
  54.                         ISDIGIT(p[4]) && ISDIGIT(p[5]) &&\
  55.                         ISDIGIT(p[6]) && ISDIGIT(p[7]) && !p[8] )
  56.  
  57. #define DSYEAR(p)     ( (ADTOI(p[0])*1000) +\
  58.                         (ADTOI(p[1])* 100) +\
  59.                         (ADTOI(p[2])*  10) +\
  60.                         (ADTOI(p[3])) )         /* ds year to int */
  61.  
  62. #define DSMONTH(p)   ( (ADTOI(p[4])*  10) +\
  63.                        (ADTOI(p[5])) )         /* ds month to int */
  64.  
  65. #define DSDAY(p)     ( (ADTOI(p[6])*  10) +\
  66.                        (ADTOI(p[7])) )         /* ds day to int */
  67.  
  68. #define ISDIGIT(p)   ((p)>='0' && (p)<='9')    /* valid digit */
  69.  
  70. #define MK_FP(seg,ofs)    ((void far *)(((unsigned long)(seg) << 16) | (ofs)))
  71.  
  72. /* #defines Months for generic use in programs */
  73. #define MONTH0       ""
  74. #define MONTH1       "Januari"
  75. #define MONTH2       "Februari"
  76. #define MONTH3       "Maart"
  77. #define MONTH4       "April"
  78. #define MONTH5       "Mei"
  79. #define MONTH6       "Juni"
  80. #define MONTH7       "Juli"
  81. #define MONTH8       "Augustus"
  82. #define MONTH9       "September"
  83. #define MONTH10      "October"
  84. #define MONTH11      "November"
  85. #define MONTH12      "December"
  86.  
  87. /* _parinfo types */
  88. #define UNDEF        0
  89. #define CHARACTER    1
  90. #define NUMERIC      2
  91. #define LOGICAL      4
  92. #define DATE         8
  93. #define ALIAS        16
  94. #define MPTR         32   /* bitwise or'ed with type for pass by reference */
  95. #define MEMO         65
  96. #define WORD         128
  97. #define ARRAY           512
  98.  
  99. /* parameter check macros */
  100. #define PCOUNT        (_parinfo(0))
  101. #define ISCHAR(n)     (_parinfo(n) & CHARACTER)
  102. #define ISNUM(n)      (_parinfo(n) & NUMERIC)
  103. #define ISLOG(n)      (_parinfo(n) & LOGICAL)
  104. #define ISDATE(n)     (_parinfo(n) & DATE)
  105. #define ISMEMO(n)     (_parinfo(n) & MEMO)
  106. #define ISBYREF(n)    (_parinfo(n) & MPTR)
  107. #define ISARRAY(n)     (_parinfo(n) & ARRAY)
  108. #define ALENGTH(n)     (_parinfa(n, 0))
  109.  
  110. /* internal Clipper dbf header info */
  111. #define DBF_DATE      (_dbf[0]->data1)      /* char pointer to header */
  112. #define REC_SIZE      (_dbf[0]->data2[0])      /* long record size */
  113. #define DATA_OFF      (_dbf[0]->data2[1])      /* long header size */
  114. #define DBF_OPEN      (*_dbf)
  115.  
  116. /* parameter count/type */
  117. extern int     _parinfo(int);
  118. extern int     _parinfa(int, int);
  119.  
  120. /* parameter values */
  121. extern char  *_parc(int, ...);
  122. extern int    _parcsiz(int, ...);
  123. extern int    _parclen(int, ...);
  124. extern int    _parni(int, ...);
  125. extern long   _parnl(int, ...);
  126. extern double _parnd(int, ...);
  127. extern int    _parl(int, ...);
  128. extern char  *_pards(int, ...);
  129.             
  130. /* function return values */
  131. /* one and only one of the _ret??() functions must be used */
  132. extern void _retc(char *);
  133. extern void _retclen(char *, int);
  134. extern void _retni(int);
  135. extern void _retnl(long);
  136. extern void _retnd(double);
  137. extern void _retl(int);
  138. extern void _retds(char *);
  139.  
  140. /* procedure (DO) return */
  141. extern void _ret(void);
  142.  
  143.  
  144. /* allocate memory */
  145. /* parameter:  requested size in bytes */
  146. /* returns:  far pointer to memory or NULL */
  147. extern unsigned char *_exmgrab(unsigned);
  148.  
  149. /* free allocated memory */
  150. /* parameters:  pointer from _exmgrab(), same size passed to _exmgrab() */
  151. extern void _exmback(unsigned char *, unsigned);
  152.  
  153.  
  154. /* misc. */
  155. extern unsigned strlen(unsigned char *);
  156.  
  157. typedef unsigned char byte;
  158. typedef unsigned int quant;
  159. typedef int Boolean;
  160.  
  161. /* DBF */
  162. extern struct
  163. {
  164.    char data1[32];
  165.    long data2[2];
  166. } *_dbf[];
  167.  
  168. typedef struct
  169. {
  170.     byte signature;   /* 03 = dbf, 83 dbf+dbt */
  171.     byte ymd[3];      /* y+1900 m d */
  172.     long last_rec;
  173.     quant data_off;
  174.     quant rec_size;
  175.     byte pad[20];
  176. } DBF_HEADER;
  177.  
  178. extern DBF_HEADER *_dbfhead();
  179. extern int _dbfopen();
  180.  
  181. /* eof */
  182.  
  183.